package com.yhsoft.buyer.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yhsoft.bill.controller.response.SalerCwtjOutVo;
import com.yhsoft.buyer.controller.request.DeliveryInVo;
import com.yhsoft.buyer.controller.request.OrdersDyInVo;
import com.yhsoft.buyer.controller.request.VenderOrdersInVo;
import com.yhsoft.buyer.controller.response.*;
import com.yhsoft.buyer.entity.BuyerOrder;
import com.yhsoft.flim.controller.response.DYOrderOutVo;
import com.yhsoft.sys.controller.Response.OrderIdsOutVo;
import com.yhsoft.sys.controller.Response.UserOrderInfoOutVo;
import com.yhsoft.wxprogram.controller.request.FlkPayInVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author yyyyyyyh
 * @since 2023-09-26
 */
public interface IBuyerOrderService extends IService<BuyerOrder> {

    OrderDetailOutVo detail(String orderId);

    CheckOutVo checkout(Integer cartId, Integer addressId);

    IPage<OrderInfoOutVo> getList(Integer showType, Long pageNo, Long pageSize);

    String flkpay(FlkPayInVo inVo) throws IOException;

    IPage<VenderOrdersOutVo> getOrderList(VenderOrdersInVo inVo, Long pageNo, Long pageSize);

    String delivery(DeliveryInVo inVo);

    IPage<VenderOrdersOutVo> getSalerOrderList(VenderOrdersInVo inVo, Long pageNo, Long pageSize);

    OrderIdsOutVo getUserOrderIds(String userId);

    UserOrderInfoOutVo getUserOrderInfo(String orderId);

    IPage<DYOrderOutVo> queryDYOrderList(Long pageNo, Long pageSize);

    BuyerOrder saveOrder(String orderId);

    void paySuccess(String outTradeNo, String transactionId);

    SalerCwtjOutVo getSalerCwtj();

    boolean checkVenderOrderStatus(Integer id);

    IPage<VenderOrdersOutVo> getSysOrderList(VenderOrdersInVo inVo, Long pageNo, Long pageSize);


    List<Map<String, Object>> getLine();


    String paySuccess(Map<String, String> resultMap);

    String refund(BuyerOrder buyerOrder);


    void checkOrderUnpaid(boolean isJob);

    void increaseProductStock(BuyerOrder buyerOrder);

    String refundSuccess(Map<String, Object> resultMap);

    IPage<OrdersDyOutVo> getSalerOrderList_dy(OrdersDyInVo inVo, Long pageNo, Long pageSize);


    IPage<VenderOrdersOutVo> getSalerOrderList_query(String cardNo, Long pageNo, Long pageSize);


    IPage<OrdersDyOutVo> getSalerOrderList_query_dy(String cardNo, Long pageNo, Long pageSize);


}
